// pages/pay/trading-record/index.js
const apiService = require('../../../utils/api.js');
const auth = require('../../../utils/auth.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		statusBarHeight: 44, // 系统状态栏高度
		activeTab: 0, // 当前选中的Tab索引 0:全部 1:收入 2:支出
		tabs: ['全部', '收入', '支出'],
		recordList: [], // 交易记录列表
		filteredRecordList: [], // 筛选后的记录列表
		isLoading: false, // 加载状态
		isEmpty: false // 是否为空
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		// 获取系统信息
		this.getSystemInfo();
		
		// 检查登录状态并加载数据
		this.checkLoginAndLoadData();
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 获取系统信息
	 */
	getSystemInfo() {
		const systemInfo = wx.getSystemInfoSync();
		this.setData({
			statusBarHeight: systemInfo.statusBarHeight || 44
		});
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		wx.navigateBack({
			delta: 1,
			success: () => {
				console.log('返回上一页成功');
			},
			fail: (error) => {
				console.error('返回上一页失败:', error);
				// 降级处理：跳转到首页
				wx.switchTab({
					url: '/pages/home/index/index'
				});
			}
		});
	},

	/**
	 * 检查登录状态并加载数据
	 */
	async checkLoginAndLoadData() {
		if (!auth.checkLoginStatus()) {
			// 未登录，显示提示并跳转到登录页
			wx.showModal({
				title: '请先登录',
				content: '查看交易记录需要先登录账号',
				confirmText: '去登录',
				cancelText: '返回',
				success: (res) => {
					if (res.confirm) {
						auth.requireLogin('/pages/pay/trading-record/index');
					} else {
						wx.navigateBack({
							delta: 1,
							fail: () => {
								wx.switchTab({
									url: '/pages/home/index/index'
								});
							}
						});
					}
				}
			});
			return;
		}
		
		// 已登录，加载交易记录
		await this.loadTradingRecords();
	},

	/**
	 * 加载交易记录数据
	 */
	async loadTradingRecords() {
		this.setData({
			isLoading: true,
			isEmpty: false
		});

		try {
			const result = await apiService.getTradingRecords();
			
			if (result.success) {
				const recordList = result.data || [];
				
				this.setData({
					recordList: recordList,
					isLoading: false,
					isEmpty: recordList.length === 0
				});
				
				// 根据当前Tab筛选数据
				this.filterRecordList();
				
				console.log('交易记录加载成功:', recordList.length, '条');
			} else {
				throw new Error(result.message);
			}
		} catch (error) {
			console.error('加载交易记录失败:', error);
			this.setData({
				isLoading: false,
				isEmpty: true
			});
			
			wx.showToast({
				title: '加载失败',
				icon: 'none'
			});
		}
	},

	/**
	 * Tab切换
	 */
	onTabChange(e) {
		const tabIndex = e.currentTarget.dataset.index;
		this.setData({
			activeTab: tabIndex
		});
		this.filterRecordList();
	},

	/**
	 * 筛选记录列表
	 */
	filterRecordList() {
		const { recordList, activeTab } = this.data;
		let filteredList = recordList;

		// 根据Tab筛选
		if (activeTab === 1) {
			// 收入
			filteredList = recordList.filter(record => record.type === 'income');
		} else if (activeTab === 2) {
			// 支出
			filteredList = recordList.filter(record => record.type === 'expense');
		}

		this.setData({
			filteredRecordList: filteredList,
			isEmpty: filteredList.length === 0
		});
	},

	/**
	 * 格式化日期
	 */
	formatDate(timestamp) {
		const date = new Date(timestamp);
		const month = String(date.getMonth() + 1).padStart(2, '0');
		const day = String(date.getDate()).padStart(2, '0');
		const hours = String(date.getHours()).padStart(2, '0');
		const minutes = String(date.getMinutes()).padStart(2, '0');
		return `${month}-${day} ${hours}:${minutes}`;
	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	async onShow() {
		// 验证登录状态
		const isLoggedIn = await auth.validateLoginStatus();
		if (isLoggedIn) {
			// 刷新交易记录
			await this.loadTradingRecords();
		} else {
			// 登录状态失效，重新检查
			this.checkLoginAndLoadData();
		}
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})